/*
 * EventoOyente.java	
 *
 * Copyright 2009 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 05/10/09, 09:12:38 AM
 */

package com.ufps.cuatro.modelo.representacion;

import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.util.base.EventoBase;

/**
 * <i><b>EventoOyente:</b></i>Representa un EventoOyente de un Oyente.
 *
 * @author  Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 05/10/09
 * @see EventoBase
 */
public class EventoOyente extends EventoBase{
    private static final long serialVersionUID = -8069131584329424694L;        
    private boolean incluido = false;
    private Oyente<Componente> objOyente;    
    
    /**
     * Constructor por defecto.
     */
    public EventoOyente() {}

    /**
     * Constructor que inicializa Propiedades Básicas.
     * @param strNombre Nombre del EventoOyente.
     * @param strAlias Alias del EventoOyente.
     */
    public EventoOyente(String strNombre, String strAlias) {
        this.strNombre = strNombre;
        this.strAlias = strAlias;
    }

    /**
     * constructor que inicializas Propiedades por medio de Referencias.
     * @param objEventoBase EventoOyente Base genérico que contiene las propiedades de 
     * inicialización para el nuevo EventoOyente.
     * @param objOyente Referencia al Oyente Padre.
     */
    public EventoOyente(EventoBase objEventoBase, Oyente<Componente> objOyente) {
        super(objEventoBase.getId(), objEventoBase.getStrNombre(), objEventoBase.getStrAlias(), objEventoBase.getStrTooltips());
        this.objOyente = objOyente;
    }        

    /**
     * Devuelve el Estado que indica si el EventoOyente ha sido incluido en una
     * Representación.
     * @return Estado que indica si el EventoOyente ha sido incluido.
     */
    public boolean isIncluido() {
        return incluido;
    }

    /**
     * Establece el Estado que indica si el EventoOyente ha sido incluido.
     * @param incluido Estado que indica si el EventoOyente ha sido incluido.
     */
    public void setIncluido(boolean incluido) {
        this.incluido = incluido;
    }

    /**
     * Devuelve la Referencia al Oyente Padre.
     * @return Referencia al Oyente Padre.
     */
    public Oyente<Componente> getObjOyente() {
        return objOyente;
    }

    /**
     * Establece la Referencia al Oyente Padre.
     * @param objOyente Referencia al Oyente Padre.
     */
    public void setObjOyente(Oyente<Componente> objOyente) {
        this.objOyente = objOyente;
    }

    @Override
    public String toString() {
        try{
            return strAlias.isEmpty() ? strNombre : strAlias;
        }catch(java.lang.NullPointerException ex){}
        return "";   
    }
    
    @Override
    public int compareTo(Object o) {
        try{
            EventoOyente obj = (EventoOyente) o;
            if(this.id > obj.id){
                return 1;
            }
            else if(this.id < obj.id){
                return -1;
            }
            else{
                return 0;
            }
        }catch(java.lang.NullPointerException ex){}
        return 0;
    }
}
